Add spawn functions, copied from the win32 backend.
authorRichard Hult <richard@imendio.com>
Sat, 3 Jun 2006 17:51:34 +0000 (17:51 +0000)
committerRichard Hult <rhult@src.gnome.org>
Sat, 3 Jun 2006 17:51:34 +0000 (17:51 +0000)
2006-06-03  Richard Hult  <richard@imendio.com>
* gdk/quartz/Makefile.am:
* gdk/quartz/gdkspawn-quartz.c: Add spawn functions, copied from the
win32 backend.

ChangeLog
ChangeLog.pre-2-10
gdk/quartz/Makefile.am
gdk/quartz/gdkspawn-quartz.c [new file with mode: 0644]

index 89385a848f8dd218e71f62fc12912e0ff88b2b5c..f72cb4f86a1f4ef6f1fd401ee7814fa5bf8df70b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2006-06-03  Richard Hult  <richard@imendio.com>                                 
+
+       * gdk/quartz/Makefile.am:                                               
+       * gdk/quartz/gdkspawn-quartz.c: Add spawn functions, copied from the
+       win32 backend.
+
 2006-06-02  Matthias Clasen  <mclasen@redhat.com>
        
        * gtk/gtkprintoperation-private.h:
index 89385a848f8dd218e71f62fc12912e0ff88b2b5c..f72cb4f86a1f4ef6f1fd401ee7814fa5bf8df70b 100644 (file)
@@ -1,3 +1,9 @@
+2006-06-03  Richard Hult  <richard@imendio.com>                                 
+
+       * gdk/quartz/Makefile.am:                                               
+       * gdk/quartz/gdkspawn-quartz.c: Add spawn functions, copied from the
+       win32 backend.
+
 2006-06-02  Matthias Clasen  <mclasen@redhat.com>
        
        * gtk/gtkprintoperation-private.h:
index fa7b5be0a660019630fa79f2a1d9b7f0a0536b0c..5c33995ad76ca1096a1b57705e8042f5e93b84fb 100644 (file)
@@ -45,6 +45,7 @@ libgdk_quartz_la_SOURCES =            \
        gdkquartz.h             \
        gdkscreen-quartz.c      \
        gdkselection-quartz.c   \
+       gdkspawn-quartz.c       \
        gdkvisual-quartz.c      \
        gdkwindow-quartz.c      \
        gdkwindow-quartz.h
diff --git a/gdk/quartz/gdkspawn-quartz.c b/gdk/quartz/gdkspawn-quartz.c
new file mode 100644 (file)
index 0000000..8f6e3d8
--- /dev/null
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2003 Sun Microsystems Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Authors: Mark McLoughlin <mark@skynet.ie>
+ */
+
+#include <config.h>
+
+#include "gdkspawn.h"
+
+#include <glib.h>
+#include <gdk/gdk.h>
+
+gboolean
+gdk_spawn_on_screen (GdkScreen             *screen,
+                    const gchar           *working_directory,
+                    gchar                **argv,
+                    gchar                **envp,
+                    GSpawnFlags            flags,
+                    GSpawnChildSetupFunc   child_setup,
+                    gpointer               user_data,
+                    gint                  *child_pid,
+                    GError               **error)
+{
+  g_return_val_if_fail (GDK_IS_SCREEN (screen), FALSE);
+  g_assert (sizeof(GPid) == sizeof(int));
+
+  return g_spawn_async (working_directory,
+                       argv,
+                       envp,
+                       flags,
+                       child_setup,
+                       user_data,
+                       (GPid*)child_pid,
+                       error);
+}
+
+gboolean
+gdk_spawn_on_screen_with_pipes (GdkScreen            *screen,
+                               const gchar          *working_directory,
+                               gchar               **argv,
+                               gchar               **envp,
+                               GSpawnFlags           flags,
+                               GSpawnChildSetupFunc  child_setup,
+                               gpointer              user_data,
+                               gint                 *child_pid,
+                               gint                 *standard_input,
+                               gint                 *standard_output,
+                               gint                 *standard_error,
+                               GError              **error)
+{
+  g_return_val_if_fail (GDK_IS_SCREEN (screen), FALSE);
+  g_assert (sizeof(GPid) == sizeof(int));
+
+  return g_spawn_async_with_pipes (working_directory,
+                                  argv,
+                                  envp,
+                                  flags,
+                                  child_setup,
+                                  user_data,
+                                  (GPid*)child_pid,
+                                  standard_input,
+                                  standard_output,
+                                  standard_error,
+                                  error);
+}
+
+gboolean
+gdk_spawn_command_line_on_screen (GdkScreen    *screen,
+                                 const gchar  *command_line,
+                                 GError      **error)
+{
+  gchar    **argv = NULL;
+  gboolean   retval;
+
+  g_return_val_if_fail (command_line != NULL, FALSE);
+
+  if (!g_shell_parse_argv (command_line,
+                          NULL, &argv,
+                          error))
+    return FALSE;
+
+  retval = gdk_spawn_on_screen (screen,
+                               NULL, argv, NULL,
+                               G_SPAWN_SEARCH_PATH,
+                               NULL, NULL, NULL,
+                               error);
+  g_strfreev (argv);
+
+  return retval;
+}